全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-21 5 分钟 ✍️ juanwangdev

CPU 配额与限制

容器 CPU 限制防止单容器占满宿主资源,下面介绍配置方法。

--cpus 参数

Bash
# 限制使用 1.5 个 CPU
docker run -d --cpus=1.5 my-app

# 限制使用 0.5 个 CPU(50%)
docker run -d --cpus=0.5 my-app

--cpus 限制容器可使用的 CPU 核心数,1.5 表示 1 个完整核心 + 50%。

--cpu-shares

Bash
# 设置 CPU 权重(默认 1024)
docker run -d --cpu-shares=512 my-app-low
docker run -d --cpu-shares=2048 my-app-high

权重分配:

  • 容器争抢 CPU 时按权重分配
  • 512:1024:2048 = 1:2:4 比例
  • 仅在 CPU 紧张时生效

--cpuset-cpus

Bash
# 绑定特定 CPU 核心
docker run -d --cpuset-cpus="0,1" my-app  # 仅使用核心 0 和 1
docker run -d --cpuset-cpus="0-3" my-app  # 使用核心 0-3

Compose 配置

YAML
version: '3.8'

services:
  app:
    image: my-app
    deploy:
      resources:
        limits:
          cpus: '1.5'
        reservations:
          cpus: '0.5'

查看 CPU 使用

Bash
# 实时监控
docker stats my-app

# 查看容器 CPU 限制
docker inspect my-app | grep -A 5 "Cpu"

# 输出
"CpuShares": 1024,
"CpuPeriod": 100000,
"CpuQuota": 150000,
"CpusetCpus": "0,1"

更新限制

Bash
# 运行时更新
docker update --cpus=2.0 my-app
docker update --cpu-shares=2048 my-app

要点总结

  • --cpus 限制容器使用 CPU 核心数(如 1.5)
  • --cpu-shares 设置权重,CPU 紧张时按比例分配
  • --cpuset-cpus 绑定特定 CPU 核心
  • Compose 通过 deploy.resources 配置限制和预留
  • docker update 运行时修改限制,无需重启容器
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 AppArmor/Seccomp 配置
下一篇 → 内存限制与 OOM
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码